home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / datelib.exe / NOW.C < prev    next >
C/C++ Source or Header  |  1992-03-27  |  3KB  |  102 lines

  1. static char now_prog[] = "@(#)Aktuelles Zeit ermitteln";
  2. static char now_ver[]  = "@(#)v1.00/kr ; 09.06.91";
  3. /* now          Ermitteln der aktuellen Zeit aus der Systemzeit.
  4. **
  5. ** Autor        Klaus Rath
  6. **
  7. ** Deklaration  char *now(int format);
  8. **
  9. ** Beschreibung Die Funktion liest die Systemzeit aus und gibt einen String
  10. **              im gewünschten Format zurück. Die aufrufende Funktion muß
  11. **              deshalb sicherstellen, daß ein char-Array ausreichender
  12. **              Größe definiert ist, oder sich zum Aufrufzeitpunkt genügend
  13. **              Speicherplatz per malloc besorgen.
  14. **              Erlaubte Formate, ihre Ausprägung und ihre Arraylänge:
  15. **              1                 hh:mm:ss            9
  16. **              2                 hh:mm               6
  17. **              3                 hh.mm.ss            9
  18. **              4                 hh.mm               6
  19. **              5                 hhmm                5
  20. **              6                 hhmmss              7
  21. **              Im Fehlerfall gibt now einen (char *)NULL zurück!
  22. **
  23. ** Änderungen   1.00 ; 09.06.91
  24. **              - Erste Version
  25. **              1.10 ; 10.06.91
  26. **              - Umkopierung auf sprintf() umgestellt.
  27. */
  28.  
  29. #include <stdio.h>
  30. #include <time.h>
  31. #include <string.h>
  32. #ifdef __TURBOC__
  33. #include <sys\types.h>
  34. #include <stdlib.h>
  35. #else
  36. #include <sys/types.h>
  37. #endif
  38. #include "datum.h"
  39.  
  40. char *now(int format)
  41. {
  42.     char      stunden[3];
  43.     char      minuten[3];
  44.     char      sekunden[3];
  45.     int       stunden_z;
  46.     int       minuten_z;
  47.     int       sekunden_z;
  48.     char      systemzeit_s[26];
  49.     time_t    systemzeit;
  50.     struct tm *heute;
  51.     char      rueckgabe[9];
  52.  
  53.     /* Systemzeit holen :
  54.     */
  55.     time(&systemzeit);
  56.     strcpy(systemzeit_s,ctime(&systemzeit));
  57.  
  58.     heute      = localtime(&systemzeit);
  59.     stunden_z  = heute->tm_hour;
  60.     minuten_z  = heute->tm_min;
  61.     sekunden_z = heute->tm_sec;
  62.  
  63.     /* Formatiert umkopieren :
  64.     */
  65.     sprintf(stunden, "%02d",stunden_z);
  66.     sprintf(minuten, "%02d",minuten_z);
  67.     sprintf(sekunden,"%02d",sekunden_z);
  68.  
  69.     /* Rückgabe nach Vorgabe zusammensetzen :
  70.     */
  71.     if ( format == TI_HM_D || format == TI_HMS_D ) {
  72.         strcpy(rueckgabe,stunden);
  73.         strcat(rueckgabe,":");
  74.         strcat(rueckgabe,minuten);
  75.         if ( format == TI_HMS_D ) {
  76.             strcat(rueckgabe,":");
  77.             strcat(rueckgabe,sekunden);
  78.         }
  79.     }
  80.     else if ( format == TI_HM_P || format == TI_HMS_P ) {
  81.         strcpy(rueckgabe,stunden);
  82.         strcat(rueckgabe,".");
  83.         strcat(rueckgabe,minuten);
  84.         if ( format == TI_HMS_P ) {
  85.             strcat(rueckgabe,".");
  86.             strcat(rueckgabe,sekunden);
  87.         }
  88.     }
  89.     else if ( format == TI_HM_DB || format == TI_HMS_DB ) {
  90.         strcpy(rueckgabe,stunden);
  91.         strcat(rueckgabe,minuten);
  92.         if ( format == TI_HMS_DB ) {
  93.             strcat(rueckgabe,sekunden);
  94.         }
  95.     }
  96.     else
  97.         return(NULL);
  98.  
  99.     return(rueckgabe);
  100.  
  101. } /* ENDE: now() */
  102.